#ifndef SCENE_H
#define SCENE_H

#include "Common/Common.h"
#include "Core/Core.h"

#include "Logic/IEntity.h"
#include "Logic/Player/IPlayer.h"
#include "Logic/Map/Map.h"
#include "Camera.h"

class Scene
{
public:
	Scene( );
	Scene( Camera* camera, Map* map );
	~Scene( );

	void Update( float dt );
	void Render( );

	bool IsActive( );

	void AddEntity( IEntity* entity );
	void RemoveEntity( IEntity* entity );

	void AddPlayer( IPlayer* player );
	void RemovePlayer( IPlayer* player );

	inline void SetCamera( Camera* camera )
	{
		_camera = camera;
	}

	inline Camera* GetCamera( )
	{
		return _camera;
	}

	inline void SetMap( Map* map )
	{
		_map = map;
	}

	inline Map* GetMap( )
	{
		return _map;
	}

private:
	Vector<IPlayer*> _players;
	Vector<IEntity*> _entities;
	Map* _map;
	Camera* _camera;
};
#endif	/* SCENE_H */
